home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…ch: Other People's Memory / ADC Developer CD (1993-03) (''Other People's Memory'')_iso / Dev.CD Mar 93.iso / Development Platforms / Apple II / Essentials / APW Interfaces / CInclude / MIDISynth.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-26  |  6.3 KB  |  196 lines  |  [TEXT/MPS ]

  1. /********************************************
  2. ; File: MidiSynth.h
  3. ;
  4. ; Copyright Apple Computer, Inc. 1991
  5. ; All Rights Reserved
  6. ;
  7. ********************************************/
  8. #ifndef __TYPES__
  9. #include <TYPES.h>
  10. #endif
  11.  
  12. /* Error Codes */
  13. #define msAlreadyStarted    0x2301        /* MidiSynth already started. */
  14. #define msNotStarted        0x2302        /* MidiSynth never started. */
  15. #define msNoDPMem            0x2303        /* Can't get direct page memory. */
  16. #define msNoMemBlock        0x2304        /* Can't get memory block. */
  17. #define msNoMiscTool        0x2305        /* Misc Tools not started. */
  18. #define msNoSoundTool        0x2306        /* Sound Tools not started. */
  19. #define msGenInUse            0x2307        /* Ensoniq generator in use. */
  20. #define msBadPortNum        0x2308        /* Illegal port number. */
  21. #define msPortBusy            0x2309        /* Port is busy. */
  22. #define msParamRangeErr        0x230a        /* Parameter range error. */
  23. #define msMsgQueueFull        0x230b        /* Message queue full. */
  24. #define msRecBufFull        0x230c        /* Rec buffer is full. */
  25. #define msOutputDisabled    0x230d        /* MIDI output disabled. */
  26. #define msMessageError        0x230e        /* Message error. */
  27. #define msOutputBufFull        0x230f        /* MIDI output buffer is full. */
  28. #define msDriverNotStarted    0x2310        /* Driver not started. */
  29. #define msDriverAlreadySet    0x2311        /* Driver already set. */
  30. #define msDevNotAvail        0x2380        /* the requested device is not available */
  31. #define msDevSlotBusy        0x2381        /* requested slot is already in use */
  32. #define msDevBusy            0x2382        /* the requested device is already in use */
  33. #define msDevOverrun        0x2383        /* device overrun by incoming MIDI data */
  34. #define msDevNoConnect        0x2384        /* no connection to MIDI */
  35. #define msDevReadErr        0x2385        /* framing error in received MIDI data */
  36. #define msDevVersion        0x2386        /* ROM version is incompatible with device driver */
  37. #define msDevIntHndlr        0x2387        /* conflicting interrupt handler is installed */
  38.  
  39. /* structure definitions */
  40. typedef struct {
  41.     byte    reserved1[0x0c];
  42.     word    MpacketStat;
  43.     word    MpacketData1;
  44.     word    MpacketData2;
  45.     byte    SeqClockFrac;
  46.     long    SeqClockInt;
  47.     byte    reserved2[0x31-0x16];
  48.     byte    SeqItemStat;
  49.     byte    SeqItemData1;
  50.     byte    SeqItemData2;
  51.     byte    reserved3[0x3f-0x33];
  52.     byte    MetroVol;
  53.     byte    reserved4[0xe4-0x3f];
  54.     word    MetroFreq;
  55.     byte    reserved5[0xea-0xe5];
  56.     byte    SeqItemTrack;
  57.     byte    reserved6;
  58.     byte    PacketBytes;
  59.     byte    reserved7[0x100-0xec];
  60. } msDirectPage, *msDirectPagePtr, **msDirectPageHndl;
  61.  
  62. typedef struct {
  63.     msDirectPagePtr    directPage;
  64.     long            reserved;
  65. } GetMSDataOutputRec, *GetMSDataOutputRecPtr, **GetMSDataOutputRecHndl;
  66.  
  67. typedef struct {
  68.     word    measureNumber;
  69.     word    beatNumber;
  70.     word    msRemainder;
  71. } MeasureRec, *MeasureRecPtr, **MeasureRecHndl;
  72.  
  73. typedef struct {
  74.     ProcPtr    EndSeq;
  75.     ProcPtr    UserMeter;
  76.     ProcPtr    Mstart;
  77.     ProcPtr    Mstop;
  78.     ProcPtr    PacketIn;
  79.     ProcPtr    SeqEvent;
  80.     ProcPtr    SysEx;
  81.     ProcPtr    PacketOut;
  82.     ProcPtr    PgmChange;
  83.     ProcPtr    Mcontinue;
  84.     ProcPtr    SMarker;
  85.     ProcPtr    RecBufFull;
  86.     ProcPtr    Reserved1;
  87.     ProcPtr    Reserved2;
  88. } CallBackRec, *CallBackRecPtr, **CallBackRecHndl;
  89.  
  90. typedef struct {
  91.     pointer    PbufStart;
  92.     long    Reserved;
  93.     pointer    RbufStart;
  94.     pointer    RbufEnd;
  95.     word    SeqFlags;
  96.     long    theClock;
  97. } SeqPlayRec, *SeqPlayRecPtr, **SeqPlayRecHndl;
  98.  
  99. typedef struct {
  100.     byte    AttackLevel;
  101.     byte    AttackRate;
  102.     byte    Decay1Level;
  103.     byte    Decay1Rate;
  104.     byte    Decay2Level;
  105.     byte    Decay2Rate;
  106.     byte    SustainLevel;
  107.     byte    Decay3Rate;
  108.     byte    Release1Level;
  109.     byte    Release1Rate;
  110.     byte    Release2Level;
  111.     byte    Release2Rate;
  112.     byte    Release3Rate;
  113.     byte    DecayGain;
  114.     byte    VelocityGain;
  115.     byte    PitchBendRange;
  116. } EnvelopeRec, *EnvelopeRecPtr, **EnvelopeRecHndl;
  117.  
  118. typedef struct {
  119.     byte    TopKey;
  120.     byte    OscConfig;
  121.     byte    Stereo;
  122.     byte    Detune;
  123.     byte    WaveAddrA;
  124.     byte    WaveSizeA;
  125.     byte    VolumeA;
  126.     byte    OctaveA;
  127.     byte    SemitoneA;
  128.     byte    FindTuneA;
  129.     byte    WavAddrB;
  130.     byte    WaveSizeB;
  131.     byte    VolumeB;
  132.     byte    OctaveB;
  133.     byte    SemitoneB;
  134.     byte    FineTuneB;
  135. } WavelistRec, *WavelistRecPtr, **WavelistRecHndl;
  136.  
  137. typedef struct {
  138.     EnvelopeRec    gen1EnvRec;
  139.     WavelistRec    gen1WaveRecs[8];
  140.     EnvelopeRec    gen2EnvRec;
  141.     WavelistRec    gen2WaveRecs[8];
  142. } InstrumentRec, *InstrumentRecPtr, **InstrumentRecHndl;
  143.  
  144. typedef struct {
  145.     byte    TrackNum;
  146.     byte    TimeStampHigh;
  147.     byte    TimeStampLow;
  148.     byte    TimeStampMid;
  149.     byte    DataByteCount;
  150.     byte    MIDIStat;
  151.     byte    DataByte1;
  152.     byte    DataByte2;
  153. } SeqItemRec, *SeqItemRecPtr, **SeqItemRecHndl;
  154.  
  155. /* available calls */
  156. extern pascal void MSBootInit() inline(0x0123,dispatcher);
  157. extern pascal void MSStartUp() inline(0x0223,dispatcher);
  158. extern pascal void MSShutDown() inline(0x0323,dispatcher);
  159. extern pascal word MSVersion() inline(0x0423,dispatcher);
  160. extern pascal void MSReset() inline(0x0523,dispatcher);
  161. extern pascal word MSStatus() inline(0x0623,dispatcher);
  162.  
  163. extern GetMSDataOutputRec GetMSData();
  164. extern pascal void SetCallBack() inline(0x1723,dispatcher);
  165. extern pascal void MSSuspend() inline(0x2223,dispatcher);
  166. extern pascal void MSResume() inline(0x2323,dispatcher);
  167. extern pascal void InitMIDIDriver() inline(0x2723,dispatcher);
  168. extern pascal void RemoveMIDIDriver() inline(0x2823,dispatcher);
  169. extern pascal void SetMIDIPort() inline(0x1323,dispatcher);
  170. extern pascal void SetMIDIMode() inline(0x0a23,dispatcher);
  171. extern pascal void SetBasicChannel() inline(0x0923,dispatcher);
  172. extern pascal void SetVelComp() inline(0x1223,dispatcher);
  173. extern pascal void SysExOut() inline(0x1823,dispatcher);
  174. extern pascal void SetInstrument() inline(0x1423,dispatcher);
  175. extern pascal void PlayNote() inline(0x0b23,dispatcher);
  176. extern pascal void StopNote() inline(0x0c23,dispatcher);
  177. extern pascal void MIDIMessage() inline(0x1a23,dispatcher);
  178. extern pascal void KillAllNotes() inline(0x0d23,dispatcher);
  179. extern pascal void SetTuningTable() inline(0x2423,dispatcher);
  180. extern pascal void GetTuningTable() inline(0x2523,dispatcher);
  181. extern pascal void SetTempo() inline(0x1623,dispatcher);
  182. extern pascal void SetBeat() inline(0x1923,dispatcher);
  183. extern pascal void SetRecTrack() inline(0x0e23,dispatcher);
  184. extern pascal void SetPlayTrack() inline(0x0f23,dispatcher);
  185. extern pascal void SeqPlayer() inline(0x1523,dispatcher);
  186. extern pascal void SetMetro() inline(0x1e23,dispatcher);
  187. extern pascal void TrackToChannel() inline(0x1023,dispatcher);
  188. extern pascal void SetTrackOut() inline(0x2623,dispatcher);
  189. extern pascal void Merge() inline(0x1c23,dispatcher);
  190. extern pascal SeqItemRecPtr Locate() inline(0x1123,dispatcher);
  191. extern pascal pointer LocateEnd() inline(0x1b23,dispatcher);
  192. extern pascal void DeleteTrack() inline(0x1d23,dispatcher);
  193. extern pascal long ConvertToTime() inline(0x2023,dispatcher);
  194. extern MeasureRec ConvertToMeasure();
  195.  
  196.